package org.rency.ues.engine.service;

import org.rency.ues.common.enums.EncryptType;
import org.rency.ues.domain.request.DecryptBatchRequest;
import org.rency.ues.domain.request.DecryptRequest;
import org.rency.ues.domain.request.EncryptBatchRequest;
import org.rency.ues.domain.request.EncryptRequest;
import org.rency.ues.domain.response.DecryptBatchResponse;
import org.rency.ues.domain.response.DecryptResponse;
import org.rency.ues.domain.response.EncryptBatchResponse;
import org.rency.ues.domain.response.EncryptResponse;
import org.rency.ues.domain.support.Certification;
import org.rency.ues.domain.support.UesResult;

/**
 * ${todo}
 *
 * @author: Created by user_rcy@163.com on 2016/8/2.
 * @version: V1.0.0
 * @since JDK 1.8
 */
public interface UesService {

    /**
     * 加密
     * @param request
     * @return
     */
    public EncryptResponse encrypt(EncryptRequest request);

    /**
     * 解密
     * @param request
     * @return
     */
    public DecryptResponse decrypt(DecryptRequest request);

    /**
     * 批量加密
     * @param request
     * @return
     */
    public EncryptBatchResponse encryptBatch(EncryptBatchRequest request);

    /**
     * 批量解密
     * @param request
     * @return
     */
    public DecryptBatchResponse decryptBatch(DecryptBatchRequest request);

    /**
     * 获取明文
     * @param encryptType
     * @param encryptKey
     * @param encryptData
     * @param certification
     * @return
     */
    public UesResult getPlainData(EncryptType encryptType, String encryptKey, String encryptData, Certification certification);
}
